/**
 * This file is part of 1genia trampoline
 * Copyright (C) 2007-2008 1genia (contact@1genia.com)
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; version 3 of the License. 
 *
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; see the file COPYING.TXT.  If not,
 * write to the Free Software Foundation, Inc., 51 Franklin Street,
 * Fifth Floor, Boston, MA 02110-1301, USA. 
 **/
package com.genia.toolbox.projects.csv.bean.impl;

import java.util.ArrayList;
import java.util.List;

import com.genia.toolbox.projects.csv.bean.Action;
import com.genia.toolbox.projects.csv.bean.FolderDescriptor;
import com.genia.toolbox.projects.csv.bean.MutableAction;
import com.genia.toolbox.projects.csv.bean.MutableActionContainerAction;

/**
 * base class for actions containing other actions.
 * 
 * @param <ACTION_TYPE>
 *          the type of the contained action.
 */
public abstract class AbstractActionContainerAction<ACTION_TYPE extends Action>
    extends AbstractActionImpl
    implements MutableActionContainerAction<ACTION_TYPE>
{
  /**
   * the actions to execute.
   */
  private List<ACTION_TYPE> actions = new ArrayList<ACTION_TYPE>();



  /**
   * getter for the actions property.
   * 
   * @return the actions
   */
  public List<ACTION_TYPE> getActions()
  {
    return actions;
  }



  /**
   * setter for the actions property.
   * 
   * @param actions
   *          the actions to set
   */
  public void setActions(List<ACTION_TYPE> actions)
  {
    this.actions = actions;
  }



  /**
   * add an {@link Action} to the list.
   * 
   * @param action
   *          the {@link Action} to add
   */
  public void addAction(ACTION_TYPE action)
  {
    this.actions.add(action);
  }



  /**
   * setter for the folderDescriptor property.
   * 
   * @param folderDescriptor
   *          the folderDescriptor to set
   * @see com.genia.toolbox.projects.csv.bean.impl.AbstractFolderDescriptorLinkableImpl#setFolderDescriptor(com.genia.toolbox.projects.csv.bean.FolderDescriptor)
   */
  @Override
  public void setFolderDescriptor(FolderDescriptor folderDescriptor)
  {
    super.setFolderDescriptor(folderDescriptor);
    for (Action action : getActions()) {
      ((MutableAction) action).setFolderDescriptor(folderDescriptor);
    }
  }
}
